// 引入创建路由函数， history 模式的实现
import {createRouter,createWebHashHistory,createWebHistory} from 'vue-router'
import routes from './routes'
// 引入store
import store from '../store/index'
// 创建路由器--配置路由守卫和路由模式等
const router =createRouter({
    // 使用history模式
    history:createWebHistory(),
    routes,
    // 控制路由跳转后滚动条的位置
    scrollBehavior(to, from, savedPosition) {
        // 始终滚动到顶部
        return { top: 0 }
      },
})
  // 配置前置路由守卫
    router.beforeEach(async (to,from,next)=>{
      // console.log(to,from);
      let token =store.state.reqCode.token
      let userinfo = store.state.reqCode.userlogininfo.name
      // 用户已登录
      if (token) {
        // 用户已经登录则不能回登录页
        if(to.path=='/login'){
          next('/home')
        }
        // 跳转到其他组件
        else{
          if (userinfo) {//还要判断用户信息是否存在
            next()
          }
          else{
            try {
              await store.dispatch('reqLoginInfo')//用户信息如果不存在则重新请求数据--解决浏览器刷新后用户信息丢失的问题
              next()
            } catch (error) {
              await store.dispatch('reqLoginOut')//token失效的情况---重新登录-清除token
              next('/login')
            }
          }
        }
      }
      else{
        // 用户未登录不能访问购物车和订单页面
        if(to.path=='/pay'||to.path=='/shopcart'||to.path=='/paysuccess'){
          next('/login')
        }
        else{
          next()
        }
        
      }
      
     
    })
export default router